Les courbes de Peano

RETOUR

Il y a cent ans, un mathématicien scandalisait ou irritait
en remplissant un carré avec une courbe sans épaisseur...

Aujourd'hui, nous allons en faire un jeu pour les enfants,
et dix exercices pour les plus grands.

Commençons par un jeu pour les enfants de 7 à 77 ans.
 
 
Etape 1 : Pour pouvoir manger son fromage, la souris doit passer par les quatre carrés. Trace son chemin et numérote les carrés traversés : 1, 2, 3, 4.

 
Etape 2 : Les quatre grands carrés sont toujours numérotés 1, 2, 3, 4 et sont maintenant partagés chacun en quatre petits carrés.
Pour pouvoir manger son fromage, la souris doit passer par les seize petits carrés. Mais les quatre premiers petits carrés de son chemin doivent être inclus dans le grand carré N° 1, les quatre suivants dans le grand carré N° 2 et ainsi de suite. Trace le chemin, et numérote les petits carrés de 1 à 16.

 
Etape 3 : Disons maintenant pour les 9 à 99 ans .
Les petits carrés ont été divisés en quatre mini-carrés mais sont toujours numérotés de 1 à 16. La souris doit passer par les quatre mini-carrés du petit carré N°1 puis par les quatre mini-carrés du petit carré N°2 etc.
Trace le chemin et numérote les mini-carrés de 1 à 64.

 
 
Etape 4 : Si tu as de 15 à 1515 ans, tu pourras peut-être essayer l’étape suivante avec cette fois 256 micro-carrés.

 
 

Bravo, tu as gagné, et en plus tu as découvert la courbe de Peano !
 

Construction de la courbe de Peano binaire

Redevenons sérieux (bien que ce qui précède le soit tout à fait). Le fait qu’un enfant de 7 ans puisse découvrir par lui-même la courbe de Peano n’enlève rien au génie de celui qui, il y a cent ans, a battu en brèche deux tabous mathématiques indiscutés :

1) Une courbe n’a pas d’épaisseur.

2) Il y a plus de points dans un carré plein que dans un segment de droite.
 
 
En effet, la courbe (limite) suivie par la souris passe par tous les points du grand carré de départ, ce qui en fait une courbe ayant une épaisseur. Pourtant cette courbe n’est quand même autre qu’un segment de droite entortillé sur lui-même et l’on conçoit bien qu’entortiller un segment ne lui rajoute pas de points. Comme ce segment passe par tous les points du carré (même plusieurs fois par certains) il y a donc au moins autant de points dans un segment que dans un carré plein !

Mais regardons tout ceci plus en détail. Le grand carré de départ est C = [0,1]2 . On définit par récurrence une subdivision de C en  carrés égaux de coté (on ne prend pas 1 £k£comme dans le jeu de la souris car cela compliquerait les définitions qui vont suivre) .  est donc le carré de départ C, les  sont ce que nous avons appelé les grands carrés, les  sont les petits carrés, les  les mini-carrés et les  les micro-carrés, etc.

Les  étant supposés construits, voici comment on construit les  : il s’agit ici de mettre en forme ce que vous avez expérimenté dans le jeu. Tout d’abord, les quatre carrés de côté  inclus dans  sont . Mais ils ne sont pas choisis arbitrairement à l’intérieur de . Leur disposition (en vue de la continuité de la courbe que l’on cherche) dépend de la place de et de celle de par les règles suivantes :
 
Il faut évidemment tenir compte des diverses rotations possibles, et on impose à et d’être situés comme suit :

Ce que l’on peut appeler la courbe de Peano binaire approchée à l’étape n est le chemin joignant les centres successifs de  ("binaire" sera expliqué plus loin). Ici le paramétrage varie de 0 à –1. Son amplitude changeant à chaque étape, il serait intéressant de le ramener sur [0,1[ de la façon suivante : si t appartient à [0,1[ , posons  (où [t] désigne la partie entière de t).

Par exemple:

et d’une façon générale:

.

Remarquons maintenant que est toujours l’un des quatre carrés inclus dans ; en effet, si k = [t] , le nombre [t] est égal à 4k, 4k +1, 4k +2 ou 4k + 3.

Les , pour t fixé, forment donc une suite de carrés (compacts) emboîtés dont l’aire tend vers 0 ; leur intersection est donc réduite à un point . Pour compléter, on pose M(1) = (1,0), et, par définition, la courbe paramétrée : est la courbe de Peano binaire, ou courbe de Hilbert.
 
 

Une courbe continue remplissant un carré

Ce qui est remarquable, c’est que l’on va pouvoir démontrer maintenant que cette courbe est continue et qu’elle passe par tous les points du carré sans avoir de formule pour calculer x(t) ni  y(t).

Pour la continuité, l’idée fondamentale est que les  pour n fixé, forment une chaîne de compacts qui se touchent et dont les centres se suivent à une distance (= ) qui tend vers 0 quand n tend vers l’infini. Prenant t et t’ de [0,1] distants de moins de , M(t) et M(t’) sont dans le même ou au pire dans deux consécutifs et . Voilà pour la continuité (uniforme, en prime, mais ça, on le savait d’avance).

Maintenant, il est clair que tout voisinage d’un point M du carré contient l’un des ; or ce  est un : il contient donc un point M(t). A cet instant, nous n’avons pas encore démontré que (M(t)) passait par tous les points du carré mais seulement que l’ensemble des M(t) était dense dans ce carré. Mais si l’on sait maintenant que l’image continue d’un compact est un compact, et qu’un compact dense dans un "collègue" est égal à ce collègue, on a fini.

Le fait que l’on ait en fait pas besoin de trop savoir par où passe la fonction M(t) pour prouver sa continuité et sa surjectivité mais que, par contre, la chaîne de compacts soit très importante, est à la base de la recherche de la caractérisation des images continues (métrisables) de [0,1]. La réponse a été donnée dans les années 20 par le théorème de HAHN-MAZURKIEVICZ-SIERPINSKI-MOORE-MENGER (est-ce un record ?) : ce sont les espaces compacts, connexes et localement connexes, ce qui en fait un sacré paquet, non seulement dans , mais aussi dans les espaces de dimension infinie (voir [6]).
 
 

Mais revenons sur terre, et posons nous une question que certains se sont peut-être posée. Pourquoi faire si compliqué, alors que pour remplir un carré — les enfants le savent dès qu’ils peuvent tenir un crayon — il suffit de faire ceci (figure 7) ?

Plus précisément, pouvez-vous définir une suite de courbes paramétrées correspondant à cette idée ? Vous pourrez alors montrer que le hic est qu'elle ne converge pas, même point par point. (exercice 1)

Une courbe à similitude interne.

Le génie de Peano a été de penser à prendre des courbes successives dont chacune est définie à partir de la précédente de façon à ne pas s’en éloigner trop. Ce faisant, il a aussi défini le premier objet fractal à similtude interne du plan (Cantor avait déjà défini son ensemble, inclus dans R, peu auparavant).

Regardons ceci de façon plus précise : le chemin de l’étape 1 étant 

celui de l’étape 2 est 

Autrement dit, à l’étape 2, on procède dans chacun des quatre carrés exactement comme on avait procédé dans le carré de départ (en effectuant une rotation pour le premier et quatrième carré).

La courbe de Peano limite est donc formée de quatre courbes semblables, la première joignant M(0) = (0,0) à M(1/4) = (0,1/2), la deuxième joignant M(1/4) à M(1/2) = (1/2,1/2), la troisième M(1/2) à M(3/4) = (1,1/2) et la quatrième M(3/4) à M(1) = (1,0) .
 
 

Ces quatre similitudes vont nous fournir des formules permettant de calculer . Tout d’abord, est issu de M(t) par la similitude indirecte s, de centre O, d’axe la droite y = x, et de rapport 1/2, d’où : 
 
 

et de même............
 
 
 
On peut ainsi construire par récurrence les points  pour k = 0,1, … ,, connaissant M(0) = (0; 0) et M(1) = (1; 0).
 
 

On obtient d’ailleurs ainsi une nouvelle suite de courbes paramétrées qui converge vers la courbe de Peano binaire, mais moins belles que les courbes définies plus haut. En fait, ces courbes moins belles donnent peut-être une meilleure idée de la courbe de Peano idéale que les précédentes, d’une part parce que, contrairement aux autres, elles passent par des points de la courbe idéale, et, d’autre part, parce que la courbe idéale possède elle aussi des points doubles : à l’étape 2, nous venons de voir que M(7/16) = M(9/16). Nous pouvons du reste remarquer que le centre du carré est un point au moins triple. Soient en effet tels que ;

alors .

Mais, à propos, pouvez-trouver les valeurs de  ? (exercice2)
 
 

Et puis, aurait-il été possible que la courbe de Peano n’ait pas de point multiple? S’il en eut été ainsi, nous aurions eu une bijection continue de [0, 1] sur [0, 1]2. Or l’image de tout fermé de [0, 1] (qui est un compact) est un compact de [0, 1]2, donc fermé, ce qui signifie que nous serions en présence d’un homéomorphisme de [0, 1] sur [0, 1]2 et ça, il ne faut quand même pas exagérer, ce n’est pas possible (vous retirez le centre du carré, c’est encore connexe ; mais si vous retirez le centre de [0, 1], ça ne l’est plus).

Bon, le centre du carré est un point triple, mais d’après les similitudes internes, tous les centres des carrés  sont aussi des points triples, ce qui fait un sous-ensemble dense de points triples.

D’ailleurs il est impossible qu’entre (0 ££ 1) il n’y ait que des points simples car l’image de  contient des carrés pleins.

(Pouvez-vous démontrer ce fait ? - exercice 3).
 

D’une façon générale, si on définit une courbe de Peano comme une surjection continue de [0,1] sur un espace métrisable non homéomorphe à [0,1], toute courbe de Peano a forcément une infinité de points multiples ; et si de plus l’image de  par cette surjection n’est jamais homéomorphe à [0,1], les points multiples sont denses dans l’image.
 
 

Pour en finir avec les points multiples, que pensez-vous de cette affirmation de Hilbert dans un article dont nous allons parler ultérieurement :

"les points multiples de la courbe sont soit doubles, soit quadruples"? (exercice 4).
 
 

Des formules explicites.

Exploitons encore un peu les formules que nous avons trouvées sur . Si vous les regardez bien, vous remarquerez que dans les arguments, il y a des divisions par quatre, et dans les images, des divisions par deux : eh bien, écrivons les arguments en base quatre et les images en base deux :

si 

Nous obtenons les formules :

Avec ceci, calculons par exemple M(1/3) ; comme, en base 4, 1/3=0,1111… , on écrit successivement :

x(0) = 0

x(0,1) = 0,0000 …

x(0,11) = 0,0000 …etc,

donc x(1/3) = 0

puis

y(0) = 0

y(0,1) = 0,1

y(0,11) = 0,11 etc,

donc y(1/3) = 1/2 + 1/4 + … + 1/2n + … = 1.

M(1/3) est le sommet en haut à gauche du carré ! (ah bon? vous n’aviez pas fait l’exercice 2 ?!).

Peut-être pourrez-vous essayer de calculer vous-même M(1/5) voire M(1/7) ; les règles permettant de définir la fonction que nous allons énoncer vous apparaîtront alors certainement de façon claire :

Posons toujours


 

Vous pourrez admirer comment une remarque purement géométrique a d’abord donné des formules algébriques, puis une définition arithmétique.

Avec ces règles on montre facilement que par exemple M(1/5) = (1/5; 2/5).

Maintenant, se pose un petit problème : on a défini la courbe de Peano par des formules ; peut-on démontrer la surjectivité sur le carré uniquement à l’aide de ces formules ? Ce n’est pas difficile et ce sera l’exercice 5. Trouvez par exemple t tel que M(t)=(1/3,1/3).

Et la continuité ? Donnons une condition générale de continuité pour ce genre d’applications. Supposons que , ces développement pouvant être écrits dans n’importe quelle base. Alors, s’il existe une suite d’entiers strictement croissante  telle que  ne dépendent que de , et si la définition de la fonction peut être appliquée aux développements propres aussi bien qu'au développements impropres, (par exemple en base 4,), en donnant bien sûr le même résultat, alors f est continue. Dans le cas qui nous intéresse, la première condition est vérifiée pour , et la deuxième également (exercice 6) : vérifions par exemple que M(0,0333...) = M(0,1) : en effet M(0,333...)=(0,000... ; 0,0111...) et M(0,1)=(0 ; 0,1) ce qui est bien le même résultat.

C’est du reste cette idée que Giuseppe Peano a lui-même exploitée.
 
 

La courbe ternaire.

En effet, il commence son article [2] en remarquant que l’application f qui vient naturellement à l'esprit, définie, en système décimal ou autre, par :

est surjective de [0,1] sur [0,1]2, mais que malheureusement elle n’est pas continue.

En effet, si on se place en système décimal, dit-il, f(0,0999 …) donne à la limite (0,0999 … ; 0,999 …) = (0,1 ; 1), tandis que f(0,1) = (0,1 ; 0), ce qui est différent. Pour essayer de remédier à cette discontinuité, il regarde comment est fabriquée géométriquement cette application : cela revient à découper le carré en 100 carrés égaux et à effectuer un balayage vertical toujours de bas en haut puis à faire ainsi pour chacun des carrés etc...

Pour que f soit continue, il faut que le balayage le soit aussi, et des remarques du domaine de la peinture en bâtiment nous ferons effectuer des balayages de bas en haut puis de haut en bas, puis de bas en haut, etc.

Peano a dû vite s’apercevoir que dans le cas d’une base paire, il est nécessaire d’effectuer aussi des balayages horizontaux ; nous venons de le voir dans le cas de la base 2 ; voici par exemple le cas de la base 4 à l'étape 2 :

C'est pourquoi Peano se contente d’affirmer que "les formules dans le cas pair sont moins simples que dans le cas impair". Et de donner ces formules dans le cas ternaire, formules dont on remarquera qu'elles ne sont pas éloignées de celles de la fonction naturelle ci-dessus :

on pose toujours, toutes les écritures étant en base 3 :

et l’on a :

Le fait que Peano ait plutôt étudié ce cas fait que l’on appelle généralement courbe de Peano cette dernière. Mais il avait au départ pensé à la courbe binaire, dont il publie un dessin dans son article. L'idée a été reprise en 1891par David Hilbert qui publie un article sur la courbe binaire, c’est pourquoi celle-ci est généralement appelée courbe de Hilbert.
 

Et si l’on faisait le jeu de la souris dans le cas ternaire ? Cette fois, l’entrée est en bas à gauche et la sortie en haut à droite, et il y a deux chemins possibles :

à vous de remplir la 2ème étape : 

Les personnes que j’ai testées ont toutes donné des réponses différentes et aucune n’a donné la véritable courbe de Peano.

A propos, pouvez-vous dire combien il existe de chemins possibles à la nième étape ? (exercice 7)

Après avoir énoncé les formules ci-dessus, Peano démontre la continuité et la surjectivité de sa courbe en utilisant une méthode semblable à celle que nous avons utilisée dans le cas binaire. (A vous : exercice 8).

Puis il conclut son article en disant qu’il est possible, dans la foulée, de remplir un cube. Là encore il se place en base 3 et donne les formules :

Là encore il se place en base 3 et donne les formules :

Pouvez-vous déterminer à quel chemin dans le cube ces formules correspondent ? (exercice 9)

Inversement, il est clair qu’il existe un chemin continu si l’on coupe le cube seulement en 8 cubes (numérotés de 1 à 8) :

Mais il n’est malheureusement pas unique comme dans le cas du carré, il y a aussi :

ainsi que:

La courbe de Lebesgue.

Une autre idée pour remédier à la discontinuité du balayage dans l’application dont nous avons parlé plus haut est de supprimer ses points de discontinuité en effectuant des "ponts" à l’aide de fonctions affines.

A l’étape 3 du cas binaire, cela donnerait le chemin :
 

C’est Henri Lebesgue qui a, en 1905, développé cette idée (voir [4]). Il considère dans un premier temps les t de [0 ; 1] ayant un développement en base 3 ne s’écrivant qu’avec des 0 ou des 2 ;

et pour un tel en base 3, il pose, en base 2 avec :

L’ensemble de ces t, qui n’est autre que l’ensemble K3 de Cantor, est obtenu en supprimant dans [0 ; 1] tous les réels strictement compris entre 1/3 = 0,1 et 2/3 = 0,2 puis tous ceux entre 0, 01 et 0, 02, et ceux entre 0, 21 et 0, 22 etc…(ces nombres écrits en base 3 bien sûr). [0 ; 1] \ K3 est donc une réunion d’intervalles ouverts disjoints et Lebesgue, après avoir remarqué que sa fonction est continue sur K3, la prolonge par continuité sur [0 ; 1] par des fonctions affines sur chacun de ces intervalles. Et cette construction a aussi l’avantage de se généraliser facilement à [0 ; 1]n (voir [8]).
 
 

Un peu d'info.

Passons maintenant au côté informatique de la chose. Nous allons essayer de tracer les courbes de Peano approchées. Or nous avons vu qu’il y en avait de deux types : soit on prend les chemins qui joignent les centres successifs de la chaîne de carrés qui recouvre le carré de départ (jolies car elles n’ont pas de point double et forment un labyrinthe), soit on prend des courbes qui joignent des points réels de la courbe limite, de plus en plus rapprochés (moins belles à cause des points multiples).

C’est le deuxième type qui est le plus facile à tracer. Pour la courbe binaire (courbe de Hilbert), il s’agit de prendre le motif de quatre segments : 

et de remplacer les quatre segments par un motif semblable joignant leurs deux extrémités, mais attention : le premier et le dernier motif doivent être mis de l’autre côté

— si vous ne le faites pas, vous allez tomber sur la courbe du crabe qui est totalement différente.

Voici une procédure récursive permettant de tracer cette courbe :

l:=1/2n;a:=0;

procédure hilbert2(n,k)

si n=0 alors avancer(l,a) c’est-à dire avancer d’une longueur l en faisant un angle a avec l’horizontale

sinon a:=a+kp/2

hilbert2(n-1,-k)

a:=a-kp/2

hilbert2(n-1,k)

hibert2(n-1,k)

a:=a-kp/2

hilbert2(n-1,-k)

a:=a+kp/2

Pour obtenir le tracé de la nième courbe, il suffit de demander hilbert2(n,1).

Si vous voulez éviter les points doubles, vous pouvez arrondir les angles ; un tel programme (non récursif) est donné dans [6] sous le nom de fractales généralisées arrondies.

Pour la courbe de Peano ternaire, c’est encore plus simple. Le motif de base est :

et l’on remplace simplement chacun des neuf segments par le motif, etc...
 

Une procédure du type de la précédente est alors
 

l:=1/3n;a:=p/4

procédure peano(n)

si n=0 alors avancer(l,a)

sinon peano(n-1)

a:=a+p/2

peano(n-1)

a:=a-p/2

peano(n-1)

a:=a-p/2

peano(n-1)

a:=a+p/2

peano(n-1)

a:=a+p/2

peano(n-1)

a:=a-p/2

peano(n-1)
 
 

Ici il devient indispensable de faire des arrondis, sinon on ne voit qu’un quadrillage :

                            

Or les arrondis ne sont qu’une suite de segments qui joignent les milieux successifs de chaque segment. Si pour l’arrondi, on ne prend qu’un seul segment, on obtient la courbe qui joint les milieux de la courbe précédente, et cette courbe n’est autre que la courbe du premier type dont nous avons parlé plus haut :

Ceci ne vaut malheureusement pas pour la courbe de Hilbert du premier type, mais voici une procédure récursive qui permet de l’obtenir.
 
 

l:=1/2n;a:=p/2

procédure hilbert1(n,k)

si n=0 alors a:=a+p

sinon a:=a-kp/2

hilbert1(n-1,-k)

a:=a-kp/2

avancer(l,a)

hilbert1(n-1,k)

a:=a+kp/2

avancer(l,a)

a:=a+kp/2

hilbert1(n-1,k)

avancer(l,a)

a:=a-kp/2

hilbert1(n-1,k)

a:=a-kp/2

Une troisième façon d’appréhender ces courbes de Peano est de tracer le labyrinthe formé par la suite des carrés. Ce qui donne pour la courbe binaire :

Cet exercice d’informatique sera le numéro 10.
 

bibliographie :
 

[1] le premier article de G. Peano dans mathematische Annalen, volume 38, page 157 (1890), intitulé : "Sur une courbe qui remplit toute une aire plane."

[2] une introduction à cet article dans le formulario mathematico de Peano, tome 5, page 239 (1908), en latin !

[3] l’article de D. Hilbert dans mathematische Annalen, volume 38, page 459 (1891), intitulé : "stetige Abbildung einer Linie auf ein Flächenstück."

[4] Leçons sur l’intégration de H. Lebesgue, page 44 (1904) : construction d’une courbe de Peano à partir de l’ensemble de Cantor.

[5] The fractal geometry of nature de Benoît Mandelbrot (Freeman-1983).

[6] Compléments d’analyse, volume 1 (topologie première partie), de F. Guénard et G. Lelievre, cahiers de Fontenay (1985).

[7] Nouveaux dessins géométriques et artistiques avec votre micro-ordinateur de J.P. Delahaye, aux éditions Eyrolles (1985).

[8] Analyse, cours de J.M. Arnaudiès et H. Fraysse (p. 601), aux éditions Dunod (1988).

RETOUR